import pytest
import os
from config.config import *
from utils.database import Database
from utils.cfg import GetConfig


@pytest.fixture(scope="session", autouse=True)
def destroy_data():

    yield
    Database().execute_sqls(SQL1, SQL2)



def pytest_configure(config):
    cfg = GetConfig(ENVIRONMENT)  # 实例化环境配置读取

    # 从命令行参数中获取环境变量
    env = config.getoption('--env', default='dev')
    os.environ['ENV'] = env

    # 根据环境加载相应的配置文件
    if os.environ['ENV'] == 'test':
        os.environ['API_URL'] = cfg.get_base_url("test_base_url")
        # 因为环境变量里面只能存字符串，因此修改，使用的时候在转回来
        os.environ['DATABASE_URL'] = str(cfg.get_database("test_database"))
    elif os.environ['ENV'] == 'prod':
        os.environ['API_URL'] = cfg.get_base_url("prod_base_url")
        os.environ['DATABASE_URL'] = str(cfg.get_database("prod_database"))
    else:
        os.environ['API_URL'] = cfg.get_base_url("dev_base_url")
        os.environ['DATABASE_URL'] = str(cfg.get_database("dev_database"))

# 添加一个新的命令行选项
def pytest_addoption(parser):
    parser.addoption(
        "--env",
        action="store",
        default="dev",
        help="Environment to run tests against (dev, test, prod)"
    )